遇見 JUCE 是個意外。原本對象是 Qt,但因客戶硬體限制作罷,開始尋找其他方案。2014 那年,C++ 跨平台開發框架我只認識 Qt、wxWidgets,前者太大,後者我不看好。找了找,不小心撞見了 JUCE。
雖然學習資源不多,但功能滿足當時需求。而且編譯出來的執行檔大小 2MB 不到,用在硬體受限的專案上,恰恰好。Windows 跟 macOS 版都用 JUCE 開發,雖然期間遇到些難題,但 JUCE 的表現出乎意料之外的好。
當時商用授權月月繳,一期 $50 鎂不到,大小專案都用得著,產生的連帶效益高。讓我逢人就說 JUCE 好,真的好。
C++ 的學習門檻雖高,但這幾年新加入的一些功能,讓 C++ 比以前親民了些。
JUCE 原始設計是處理聲音(Audio)。音樂類的軟體很在意效能,特別是即時聲音處理的場景,即使延遲只多一點點,也可能出現雜音或破音。因此,JUCE 相當重視程式碼效能。
JUCE 作者對程式碼品質有所堅持,Coding Standards 寫明 Coding Style,雖然有些風格與我不同,但龜毛的程度,以及自我要求,是維持高品質程式碼的關鍵。
Julian Storer 在 2015 年的影片中,拿實際案例(Zlib)說明他對程式碼的態度:
JUCE 的學習資源還是少,而且至今還沒有中文書可以推人入坑...
JUCE 的 UI Controls 不是使用平台原生,因此,控制項的外觀以及表現雖然接近系統原生,但不完全一樣。評估時,一定要納入考量。
Accessibility 功能在近期釋出的 JUCE 6.1 正式支援,相較於其他產品,時間太晚。另外,Touch Input 裝置的處理有些問題,尚未確認新版本是否改善。
C++ 跟其他後起之秀比起來,相對難使。Spotify 開發的 Pedaboard 就不用 C++ 開發,而是把 JUCE 包起來,用 Python 疊加需要的功能。C++ 還是不少人的障礙...
以上,列出我認為評估 JUCE 時,需要考量的面向。